class UsersController < ApplicationController

  before_filter :check_logged , :only => [:edit, :update]
  before_filter :check_deadline, :only => [:new]

  def check_deadline
    if false#true
      flash[:notice] = "As inscrições estão fechadas."
      redirect_to root_url
    end
  end

  # render new.rhtml
  def new
     if logged_in?
      redirect_to root_path
    else
      @user = User.new
    end

  end

  def create

      cookies.delete :auth_token
      # protects against session fixation attacks, wreaks havoc with
      # request forgery protection.
      # uncomment at your own risk
      # reset_session
      @user = User.new(params[:user])
      @user.save
      if @user.errors.empty?
        self.current_user = @user
        redirect_to attendees_path
        flash[:notice] = "Você está registrado"
      else
        flash[:notice] = "Tente novamente."
        render :action => "new"
      end
    end

    def edit
		  @user = current_user
    end

    def update
    	@user = current_user

    	respond_to do |format|

		  if User.authenticate(@user.login, params[:user][:old_password])
			  if @user.update_attributes(params[:user])
				  flash[:notice] = 'Dados atualizados com sucesso.'
				  format.html { redirect_to(root_url) }
				  format.xml  { head :ok }
			  else
			    flash[:notice] = 'Novas senhas não coincidem.'
				  format.html { redirect_to edit_user_path }
				  format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
			  end
	   	  else
	   	  	flash[:notice] = "Senha entrada não está correta."
	   	  	format.html { redirect_to edit_user_path }
		  end

		end
   	end

   	def forgot_password

      @user = User.new

      if request.post?

     	  @user = User.find_by_email(params[:user][:email])

     	  if @user
     	    @user.create_reset_code
     	    @user.send_reset_code
     	    flash[:notice] = "Código de recuperação enviado para #{params[:user][:email]}."
				  #format.html { redirect_to(root_url) }
        else
          flash[:notice] = "Nenhum usuário cadastrado com o email #{params[:user][:email]}"
				  #format.html { redirect_to('/esqueci') }
        end
      end

 	  end

 	  def reset_password

      @user = User.new

 	   if request.post?
   	    @user = User.find_by_email(params[:user][:email])

     	  if @user and @user.reset?
     	     if @user.reset_code == params[:user][:reset_code]
       	    if @user.update_attributes(params[:user])
				      flash[:notice] = 'Dados atualizados com sucesso.'
				      @user.delete_reset_code
				      @user.save!
				      #format.html { redirect_to(root_url) }
				      #format.xml  { head :ok }
		         else
		          flash[:notice] = 'Novas senhas não coincidem.'
				      #format.html { redirect_to edit_user_path }
				      #format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
		        end
   	       else
     	        flash[:notice] = 'Código inválido.'
   	       end

        else
          flash[:notice] = "Nenhum usuário cadastrado com o email #{params[:user][:email]}"
				  #format.html { redirect_to(root_url) }
				  #format.xml  { head :ok }
        end
      end
    end

end

